package cn.iocoder.yudao.demo.mybatis.mapper;

import cn.iocoder.yudao.boot.mybatis.mapper.BaseMapperX;
import cn.iocoder.yudao.boot.mybatis.query.MPJLambdaWrapperX;
import cn.iocoder.yudao.demo.mybatis.entity.Role;
import cn.iocoder.yudao.demo.mybatis.entity.User;
import cn.iocoder.yudao.demo.mybatis.vo.UserInfoVO;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface UserMapper extends BaseMapperX<User> {
    default List<UserInfoVO> listUserInfo() {
        return this.selectJoinList(UserInfoVO.class,
                new MPJLambdaWrapperX<User>() // 主表
                        .selectAs(User::getId, UserInfoVO::getUserId)//别名
                        .selectAs(User::getName, UserInfoVO::getUserName)//别名
                        .selectAs(User::getAge, UserInfoVO::getAge)//别名
                        .selectAs(Role::getId, UserInfoVO::getRoleId)//别名
                        .selectAs(Role::getName, UserInfoVO::getRoleName)//别名
                        .leftJoin(Role.class, Role::getId, User::getRoleId) // 联表
        );
    }
}
